import java.io.*;

/*
    练习：转换文件编码
        将GBK编码的文本文件，转换为UTF-8编码的文本文件。

    分析:
        1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称GBK
        2.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称UTF-8
        3.使用InputStreamReader对象中的方法read读取文件
        4.使用OutputStreamWriter对象中的方法write,把读取的数据写入到文件中
        5.释放资源
 */
public class EncodingConversion {
    public static void main(String[] args) {
        try (//1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称GBK
             InputStreamReader isr = new InputStreamReader(new FileInputStream("IOAdvanced/gbk.txt"), "gbk");
             //2.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称UTF-8
             OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("IOAdvanced/gbk-utf8.txt"), "utf-8");
        ) {
            //3.使用InputStreamReader对象中的方法read读取文件
            char[] chars = new char[1024];
            int b;
            while ((b = isr.read(chars)) != -1) {
                //4.使用OutputStreamWriter对象中的方法write,把读取的数据写入到文件中
                osw.write(chars, 0, b);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
